<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>运算符</title>
  </head>
  <body>
    <script>
      // 题1.
      //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？
      //结果是57  string
      //结果是327 string

      // 题2.
      //6 - false的结果是什么？
      //6

      // 题3.
      //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？
      //NaN,6false   数据类型：数值，字符串

      // 题4.
      //下面代码分别输出什么？请写出分析过程
      // var a = 1;
      // var b = ++a + ++a;
      // console.log(b);

      //b=4
      //过程：++a 先加后用，所以是2+2=4


      //---上面和下面是两段代码---
      // var a = 1;
      // var b = a++ + a++;
      // console.log(b);

      //b=3
      //过程：a++ 先用后加，所以是1+2=3

      // 题5.
      //JS中哪些值通过Boolean对象转换出来的值为false
      //0，undefined,null,"",NaN

      // 题6.
      //分析下面代码的结果并解释原因。
      // var a = 1;
      // var b = 2;

      // console.log(a && b);  结果2，因为&&碰到假值，就会短路，并会返回该假值，1和2都是真，所以输出的是最后一个真值。
      // console.log(a || b);  结果1, 因为||碰到真值，就会短路，并返回该真值，1是真值，所以输出的值是1

      // 题7.
      //分析下面代码，分别输出什么？(以注释形式写在console.log后面)

      // var str = "12306";
      // var str1 = 1;
      // var num = 12306;
      // var boo = true;

      // console.log(str == num);    true
      // console.log(str === num);   false
      // console.log(str1 == boo);   true
      // console.log(str1 === boo);  false

      // 题8.
      //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)
      var i = 100;
      i++; //此处的i为100，后置++再下一次计算时+1
      j = i++; //因为上一步，此处的i为101,j=101
      y = ++j; //++j,先加后用，j先+1，所以y=102
      console.log(y);//102
      console.log(j);//101 




      //分析console.log(1 + - + + + - + 1)的结果
      //2 

      // var a = true && "" && 12306;
      // var b = false || "" || undefined || "bluej" || 12306;
      // console.log(a); 结果 ""
      // console.log(b); 结果 "bluej"




    </script>
  </body>
</html>
